﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using LogicaNegocio;
using Entidades;

namespace LimsWeb.iAdministrador
{
    public partial class vUsuarios : System.Web.UI.Page
    {
        LN_Usuario oLn_Usuario = new LN_Usuario();
        List<ENT_Usuario> oList_Usuario = new List<ENT_Usuario>();
        LN_PerfilUsuario oLn_PerfilUsuario = new LN_PerfilUsuario();
        LN_Laboratorio oLn_Laboratorio = new LN_Laboratorio();

        protected void Page_Load(object sender, EventArgs e)
        {

         //   Session["UsuarioID"] = 13;

            try
            {
                int usuarioID = Int32.Parse(Session["UsuarioID"].ToString());
            }
            catch
            {
                Response.Redirect("../iRegistro/Login.aspx");
                return;
            }


            if (!Page.IsPostBack)
            {
                oList_Usuario = oLn_Usuario.ListarUsuario(Int32.Parse(Session["UsuarioID"].ToString()));
                gvUsuarios.DataSource = oList_Usuario;
                gvUsuarios.DataBind();
            }

            if (!Page.IsPostBack)
            {
                CargarCombo(1, 0); //Cargar Lista PerfilUsuario
                CargarCombo(2, Int32.Parse(Session["UsuarioID"].ToString())); //Cargar Lista Laboratorio
            }

        }


        protected void CargarCombo(int tipo, int filtro)
        {
            switch (tipo)
            {
                case 1: //CARGAR PerfilUsuario
                    List<ENT_PerfilUsuario> oLista_PerfilUsuario = new List<ENT_PerfilUsuario>();
                    oLista_PerfilUsuario = oLn_PerfilUsuario.ListarPerfilUsuario();
                    ddlPerfilUsuario.DataSource = oLista_PerfilUsuario;
                    ddlPerfilUsuario.DataTextField = "NomPerfilUsuario";
                    ddlPerfilUsuario.DataValueField = "PerfilUsuarioID";
                    ddlPerfilUsuario.DataBind();
                    break;
                case 2: //CARGAR Laboratorio
                    List<ENT_Laboratorio> oLista_Laboratorio = new List<ENT_Laboratorio>();
                    oLista_Laboratorio = oLn_Laboratorio.ListarLaboratorio(filtro);
                    ddlLaboratorio.DataSource = oLista_Laboratorio;
                    ddlLaboratorio.DataTextField = "NomLaboratorio";
                    ddlLaboratorio.DataValueField = "LaboratorioID";
                    ddlLaboratorio.DataBind();
                    break;
            }
        }


        protected void btnEliminar_Command(object sender, CommandEventArgs e)
        {
            try
            {
                string strID = e.CommandArgument.ToString();
                string[] datos = strID.Split('{');

                oLn_Usuario.EliminarUsuario(Int32.Parse(datos[0].ToString().Trim()));

                oList_Usuario = oLn_Usuario.ListarUsuario(Int32.Parse(Session["UsuarioID"].ToString()));
                gvUsuarios.DataSource = oList_Usuario;
                gvUsuarios.DataBind();
            }
            catch (Exception ex)
            {
                Response.Write("<script>alert('Error al eliminar..." + ex.Message + "');</script>");
            }
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            int resultado = -1;
            ENT_Usuario oEnt_Usuario = new ENT_Usuario();
            oEnt_Usuario.Nombre = txtNombre.Text.Trim();
            oEnt_Usuario.PerfilUsuarioID= Int32.Parse(ddlPerfilUsuario.SelectedValue.ToString());
            oEnt_Usuario.LaboratorioID = Int32.Parse(ddlLaboratorio.SelectedValue.ToString());
            oEnt_Usuario.Correo = txtCorreo.Text.Trim();

            if (rbHabilitado.Checked) {
                oEnt_Usuario.Estado = 1;
            }
            else
            {
                oEnt_Usuario.Estado = 2;
            }

            string dominio = string.Empty;

            dominio = txtCorreo.Text.Trim();

            string[] split = dominio.Split(new Char[] { '@' });

            foreach (string s in split)
            {
                dominio = s;
            }

            if (dominio.ToString().Length == 0)
            {
                dominio = "adads";
            }
            
            oEnt_Usuario.Dominio = dominio;
            

            if (txtUsuarioID.Text.Length == 0)
            {
                resultado = -1;
                oEnt_Usuario.Clave = txtClave.Text.Trim();
                int existeSupervisor = -1;
                oLn_Usuario.InsertarUsuario(oEnt_Usuario, ref resultado, Int32.Parse(Session["UsuarioID"].ToString()), ref existeSupervisor);
                //   Response.Write("<script>alert('Producto creado correctamente');</script>");

                if (existeSupervisor == 0)
                {
                    if (resultado == 0)
                    {
                        Response.Write("<script>alert('El correo debe pertenecer al dominio de la empresa');</script>");
                        return;
                    }
                }
                else {
                    Response.Write("<script>alert('Ya existe un supervisor para este laboratorio');</script>");
                }


           
            }
            else
            {

                oEnt_Usuario.UsuarioID = Int32.Parse(txtUsuarioID.Text.Trim());

                if (chkCambiarClave.Checked)
                {
                    oEnt_Usuario.Clave = txtClave.Text;
                    oLn_Usuario.ActualizarUsuario(oEnt_Usuario,2);
                }
                else {

                    oEnt_Usuario.Clave = " ";
                    oLn_Usuario.ActualizarUsuario(oEnt_Usuario,1);
                }
              
                //   Response.Write("<script>alert('Producto actualizado correctamente');</script>");

            }

            oList_Usuario = oLn_Usuario.ListarUsuario(Int32.Parse(Session["UsuarioID"].ToString()));
            gvUsuarios.DataSource = oList_Usuario;
            gvUsuarios.DataBind();
        }






    }
}